Overview
En esta página, puede ver ejemplos de código copiables que muestran cómo administrar diferentes tipos de índices mediante el controlador C.
Tip
Para utilizar un ejemplo de esta página, copie el ejemplo de código en el
Aplicación de ejemplo o su propia aplicación. Asegúrese de reemplazar todos los marcadores de posición en los ejemplos de código, como <connection string URI>, con los valores relevantes para su implementación de MongoDB.
Aplicación de muestra
Puede utilizar la siguiente aplicación de muestra para probar los ejemplos de código en esta página. Para usar la aplicación de muestra, siga los siguientes pasos:
Asegúrate de tener instalado el controlador C.
Copia el siguiente código y pégalo en un nuevo archivo
.c.Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.
1 2 3 4 5 int 6 main(void) 7 { 8 bson_error_t error; 9 10 mongoc_init(); 11 12 mongoc_client_t *client = mongoc_client_new("<connection string URI>"); 13 mongoc_collection_t *collection = mongoc_client_get_collection(client, "<database name>", "collection name"); 14 15 // Start example code here 16 17 // End example code here 18 19 mongoc_collection_destroy(collection); 20 mongoc_client_destroy(client); 21 mongoc_cleanup(); 22 23 return EXIT_SUCCESS; 24 }
Índice de un solo campo
El siguiente ejemplo crea un índice ascendente en el campo especificado:
bson_t *keys = BCON_NEW("<field name>", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para obtener más información sobre los índices de campo único, consulte la guía Índices de campo único.
Índice compuesto
El siguiente ejemplo crea un índice compuesto de dos índices ascendentes en los campos especificados:
bson_t *keys = BCON_NEW("<field name 1>", BCON_INT32(1), "<field name 2>", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para aprender más sobre índices compuestos, consulta la guía de Índices compuestos.
Multikey Index
El siguiente ejemplo crea un índice multiclave ascendente en el campo con valor de matriz especificado:
bson_t *keys = BCON_NEW("<array field name>", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para obtener más información sobre los índices de claves múltiples, consulte la guía Índices de claves múltiples.
Índice geoespacial
El siguiente ejemplo crea un índice 2dsphere en el campo especificado que contiene objetos GeoJSON:
bson_t *keys = BCON_NEW("<GeoJSON object field name>", BCON_UTF8("2dsphere")); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Para obtener más información sobre el tipo de datos GeoJSON, consulte Objetos GeoJSON en el manual de MongoDB Server.
Índice único
El siguiente ejemplo crea un índice único ascendente en el campo especificado:
bson_t *keys = BCON_NEW("title", BCON_INT32(1)); bson_t *opts = BCON_NEW("unique", BCON_BOOL(true)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, opts); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); bson_destroy(opts); mongoc_index_model_destroy(index_model);
Índice de comodines
El siguiente ejemplo crea un índice comodín ascendente en la colección especificada:
bson_t *keys = BCON_NEW("$**", BCON_INT32(1)); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Índice del clúster
El siguiente ejemplo crea una nueva colección con un índice clúster ascendente en el campo _id:
bson_t *opts = BCON_NEW("clusteredIndex", "{", "key", "{", "_id", BCON_INT32(1), "}", "unique", BCON_BOOL(true), "}"); mongoc_database_t *database = mongoc_client_get_database(client, "<database name>"); if (mongoc_database_create_collection(database, "<collection name>", opts, &error)) { printf("Successfully created collection\n"); } else { fprintf(stderr, "Failed to create collection: %s", error.message); } mongoc_database_destroy(database); bson_destroy(opts);
Text Index
El siguiente ejemplo crea un índice de texto en el campo de cadena especificado:
bson_t *keys = BCON_NEW("<field name>", BCON_UTF8("text")); mongoc_index_model_t *index_model = mongoc_index_model_new(keys, NULL); if (mongoc_collection_create_indexes_with_opts(collection, &index_model, 1, NULL, NULL, &error)) { printf("Successfully created index\n"); } else { fprintf(stderr, "Failed to create index: %s", error.message); } bson_destroy(keys); mongoc_index_model_destroy(index_model);
Eliminar un índice
El siguiente ejemplo elimina un índice con el nombre especificado:
if (mongoc_collection_drop_index(collection, "<index name>", &error)) { printf("Successfully dropped index\n"); } else { fprintf(stderr, "Failed to drop index: %s", error.message); }
Para obtener más información sobre cómo eliminar índices, consulte Eliminar un índice en la guía Trabajar con índices.
Gestión del índice de búsqueda de MongoDB
Las siguientes secciones contienen ejemplos de código que describen cómo administrar los índices de búsqueda de MongoDB.
Para obtener más información sobre los índices de búsqueda de MongoDB, consulte la guía Índices de búsqueda de MongoDB.
Crear índice de búsqueda
El siguiente ejemplo crea un índice de búsqueda de MongoDB en el campo especificado:
bson_t cmd; char *cmd_str = bson_strdup_printf( BSON_STR({ "createSearchIndexes" : "%s", "indexes" : [ {"definition" : {"mappings" : {"dynamic" : false}}, "name" : "<index name>"} ] }), "<collection name>"); bson_init_from_json(&cmd, cmd_str, -1, &error); bson_free(cmd_str); if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) { printf("Successfully created search index\n"); } else { fprintf(stderr, "Failed to create search index: %s", error.message); } bson_destroy(&cmd);
Para obtener más información sobre la creación de índices de búsqueda, consulte la guía Crear un índice de búsqueda.
Índices de búsqueda de listas
El siguiente ejemplo imprime una lista de índices de búsqueda de MongoDB en la colección especificada:
bson_t pipeline; const bson_t *doc; const char *pipeline_str = BSON_STR({"pipeline" : [ {"$listSearchIndexes" : {}} ]}); bson_init_from_json(&pipeline, pipeline_str, -1, &error); mongoc_cursor_t *cursor = mongoc_collection_aggregate(collection, MONGOC_QUERY_NONE, &pipeline, NULL, NULL); while (mongoc_cursor_next(cursor, &doc)) { char *str = bson_as_canonical_extended_json(doc, NULL); printf("%s\n", str); bson_free(str); } bson_destroy(&pipeline); mongoc_cursor_destroy(cursor);
Para obtener más información sobre cómo enumerar índices de búsqueda, consulte la guía Listar índices de búsqueda.
Actualizar índices de búsqueda
El siguiente ejemplo actualiza un índice de búsqueda de MongoDB existente con la nueva definición de índice especificada:
bson_t cmd; char *cmd_str = bson_strdup_printf( BSON_STR({ "updateSearchIndex" : "%s", "definition" : {"mappings" : {"dynamic" : true}}, "name" : "<index name>"}), "<collection name>"); bson_init_from_json(&cmd, cmd_str, -1, &error); bson_free(cmd_str); if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) { printf("Successfully updated search index\n"); } else { fprintf(stderr, "Failed to create search index: %s", error.message); } bson_destroy(&cmd);
Para obtener más información sobre cómo actualizar los índices de búsqueda, consulte la guía Actualizar un índice de búsqueda.
Eliminar índices de búsqueda
El siguiente ejemplo elimina un índice de búsqueda de MongoDB con el nombre especificado:
bson_t cmd; char *cmd_str = bson_strdup_printf( BSON_STR({ "dropSearchIndexes" : "%s", "index" : "<index name>" }), "<collection name>"); bson_init_from_json(&cmd, cmd_str, -1, &error); if (mongoc_collection_command_simple(collection, &cmd, NULL, NULL, &error)) { printf("Successfully deleted search index\n"); } else { fprintf(stderr, "Failed to delete search index: %s", error.message); } bson_destroy(&cmd);
Para obtener más información sobre cómo eliminar índices de búsqueda, consulte la guía Eliminar un índice de búsqueda.